package com.atguigu.jxc.service.impl;

import com.atguigu.jxc.dao.GoodsTypeDao;
import com.atguigu.jxc.domain.ServiceVO;
import com.atguigu.jxc.domain.SuccessCode;
import com.atguigu.jxc.entity.GoodsType;
import com.atguigu.jxc.entity.GoodsTypeVO;
import com.atguigu.jxc.entity.Log;
import com.atguigu.jxc.service.GoodsTypeService;
import com.atguigu.jxc.service.LogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * @description
 */
@Service
public class GoodsTypeServiceImpl implements GoodsTypeService {

    @Autowired
    private GoodsTypeDao goodsTypeDao;
    @Autowired
    private LogService logService;

    @Override
    public ServiceVO save(String goodsTypeName, Integer pId) {
        logService.save(new Log(Log.INSERT_ACTION, "新增分类"+ goodsTypeName));
        goodsTypeDao.insertGoodsType(goodsTypeName,pId);
        return new ServiceVO<>(SuccessCode.SUCCESS_CODE, SuccessCode.SUCCESS_MESS);
    }

    @Override
public List<GoodsTypeVO> loadGoodsType() {
    //1.查询出所有分类
    List<GoodsTypeVO> goodsTypeVOS = queryGoodsType(-1);
    logService.save(new Log(Log.SELECT_ACTION, "分页查询所有商品分类"));
    // return JSONArray.toJSONString(goodsTypeVOS);
    return goodsTypeVOS;
}

    public List<GoodsTypeVO> queryGoodsType(Integer pId) {
        //1.先查询出List<GoodsType                                                >
        List<GoodsType> goodsTypes = goodsTypeDao.queryGoodsType(pId);
        List<GoodsType> goodsType1 = goodsTypeDao.queryGoodsType(pId);
        List<GoodsType> goodsType2 = goodsTypeDao.queryGoodsType(pId);




        //第二次可以查出来4个对象
        if (CollectionUtils.isEmpty(goodsTypes)) {
            return null;
        }

        //2.把List<GoodsType> 转化为 List<GoodsTypeVO>
        List<GoodsTypeVO> goodsTypeVOS = new ArrayList<>();
        for (GoodsType goodsType : goodsTypes) {
            GoodsTypeVO goodsTypeVO = new GoodsTypeVO();
            goodsTypeVO.setId(goodsType.getGoodsTypeId());
            goodsTypeVO.setText(goodsType.getGoodsTypeName());
            goodsTypeVO.setState(goodsType.getGoodsTypeState() == 1 ? "closed" : "open");
            goodsTypeVO.setIconCls("goods-type");
            //在用的时候初始化
            Map map = new HashMap();
            map.put("state", goodsType.getGoodsTypeState());
            goodsTypeVO.setAttributes(map);
            goodsTypeVOS.add(goodsTypeVO);

            if (goodsType.getGoodsTypeState() == 1) {
                //设置children
                goodsTypeVO.setChildren(queryGoodsType(goodsType.getGoodsTypeId())); //
            }
        }
         System.out.println("list = " + goodsTypeVOS);
        return goodsTypeVOS;
    }
}
